package com.wangzh.concurrent;

//线程本地缓存，能够防止线程调用错乱，保证name的值在线程中是正确的.
/*
* 1.是java提供的线程本地存储机制，可以利用该机制将数据缓存到某个线程内部，该线程可以在任意是时刻调用
* 2.底层通过ThreadLocalMap来实现的，每个thread对象中都存在一个threadlocalmap，key是threadlocal对象，value是要缓存的值
* 3.map是在线程结束的时候自动释放的，线程关闭的话不存在内存溢出。如果在线程池中使用，线程是一致不释放的map会持续增加，造成内存泄漏。
* 解决方法是在线程中任务执行完毕是主动通过调用map.remove()释放。
* 4.
* */
public class PersonThreadLocal {
    private ThreadLocal<String> name = new ThreadLocal<>();

    public String getName() {
        return this.name.get();
    }

    public void setName(String name) {
        this.name.set(name);
    }
}
